package com.lxyk.service.impl;

import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lxyk.mapper.AccountMapper;
import com.lxyk.pojo.Account;
import com.lxyk.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Objects;
/*mybatis plus在service层也有一个接口 就是IService 如果只是单表查询 那么mapper 层和 service层都不用写了 可以去学习一下*/
@Service
public class AccountServiceImpl implements AccountService {
    @Autowired
    private AccountMapper accountMapper;
    /**
     * 用户登录
     * 步骤：
     * 1。根据用户名查询对应用户表
     * 2.判断账户是否为空，如果为空 登录失败 返回false
     * 3.如果账户非空 ，输入密码进行MD5加密
     * 4.比较数据库的密码和加密的密码是否相等
     * 5.相等 登陆成功 返回true 否则返回false
     */
    @Override
    public Boolean login(String userName, String userPwd) {
        QueryWrapper<Account> qw=new QueryWrapper<>();//mybatis-plus的条件构造器
        qw.eq("user_name",userName);
        Account account=accountMapper.selectOne(qw);
        if (account==null){
            return false;//如果用户名都错误 此方法到此就结束了 此方法返回false 下边的就不执行了
        }
        //得到加密的密码
        String encodePwd = DigestUtil.md5Hex(userPwd);//DigestUtil没有s
        //加密的密码和数据库密码对比
        if(Objects.equals(encodePwd,account.getUserPwd())){
            /*Object:是祖宗类所有类都继承他 equals(Object obj)方法判断一些其他对象是否等于此
            * Objects:是 final 修饰的类，不可继承，内部方法都是 static 方法，从 jdk1.7 开始才引入了 Objects 类 说白了用法就是工具类
            * 其中的equals(Object a,Object b)方法对比a b参数是否相等*/
            return true;
        }else {
            return false;
        }
    }

    /**
     * 修改密码
     * @param account
     * @return
     */
    @Override
    public boolean pwdUser(Account account) {
        QueryWrapper<Account> qw=new QueryWrapper<>();
        qw.eq("user_name",account.getUserName());
        int update = accountMapper.update(account, qw);
        if (update>0){
            return true;
        }else {
            return false;
        }
    }
}
